1   // Copyright 2007, 2008, 2009 The Apache Software Foundation
2   //
3   // Licensed under the Apache License, Version 2.0 (the "License");
4   // you may not use this file except in compliance with the License.
5   // You may obtain a copy of the License at
6   //
7   //     http://www.apache.org/licenses/LICENSE-2.0
8   //
9   // Unless required by applicable law or agreed to in writing, software
10  // distributed under the License is distributed on an "AS IS" BASIS,
11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  // See the License for the specific language governing permissions and
13  // limitations under the License.
14  
15  package org.apache.tapestry5.internal.beaneditor;
16  
17  import org.apache.tapestry5.beaneditor.BeanModel;
18  import org.apache.tapestry5.beaneditor.PropertyModel;
19  import org.apache.tapestry5.internal.test.InternalBaseTestCase;
20  import org.easymock.EasyMock;
21  import org.testng.annotations.DataProvider;
22  import org.testng.annotations.Test;
23  
24  public class BeanModelUtilsTest extends InternalBaseTestCase
25  {
26      @Test(dataProvider = "split_inputs")
27      public void split(String propertyNames, String[] expected)
28      {
29          assertEquals(BeanModelUtils.split(propertyNames), expected);
30      }
31  
32      private Object[] build(String propertyNames, String... expected)
33      {
34          return new Object[]
35                  {propertyNames, expected};
36      }
37  
38      @DataProvider
39      public Object[][] split_inputs()
40      {
41          return new Object[][]
42                  {build("fred", "fred"), build("fred,barney", "fred", "barney"),
43                          build(" fred, barney, wilma, betty ", "fred", "barney", "wilma", "betty"),
44                          new Object[]
45                                  {"   ", new String[0]}};
46      }
47  
48      @Test
49      public void exclude()
50      {
51          BeanModel model = mockBeanModel();
52  
53          expect(model.exclude("fred", "barney")).andReturn(model);
54  
55          replay();
56  
57          BeanModelUtils.exclude(model, "fred,barney");
58  
59          verify();
60      }
61  
62      @Test
63      public void reorder()
64      {
65          BeanModel model = mockBeanModel();
66  
67          expect(model.reorder("fred", "barney")).andReturn(model);
68  
69          replay();
70  
71          BeanModelUtils.reorder(model, "fred,barney");
72  
73          verify();
74      }
75  
76      @Test
77      public void add()
78      {
79          BeanModel model = mockBeanModel();
80          PropertyModel fred = mockPropertyModel();
81          PropertyModel barney = mockPropertyModel();
82  
83          expect(model.addEmpty("fred")).andReturn(fred);
84          expect(model.addEmpty("barney")).andReturn(barney);
85  
86          replay();
87  
88          BeanModelUtils.add(model, "fred,barney");
89  
90          verify();
91      }
92  
93      /**
94       * TAP5-478
95       */
96      @Test
97      public void include_before_add()
98      {
99          BeanModel model = mockBeanModel();
100         PropertyModel fred = mockPropertyModel();
101 
102         EasyMock.checkOrder(model, true);
103 
104         expect(model.addEmpty("fred")).andReturn(fred);
105 
106         expect(model.include("sam", "fred")).andReturn(model);
107 
108         replay();
109 
110         BeanModelUtils.modify(model, "fred", "sam", null, null);
111 
112         verify();
113     }
114 
115     @Test
116     public void modify_no_work()
117     {
118         BeanModel model = mockBeanModel();
119 
120         replay();
121 
122         BeanModelUtils.modify(model, null, null, null, null);
123 
124         verify();
125     }
126 
127     @Test
128     public void modify_full()
129     {
130         BeanModel model = mockBeanModel();
131         PropertyModel fred = mockPropertyModel();
132         PropertyModel barney = mockPropertyModel();
133 
134         expect(model.addEmpty("fred")).andReturn(fred);
135         expect(model.addEmpty("barney")).andReturn(barney);
136 
137         expect(model.exclude("pebbles", "bambam")).andReturn(model);
138 
139         expect(model.reorder("wilma", "betty")).andReturn(model);
140 
141         replay();
142 
143         BeanModelUtils.modify(model, "fred,barney", null, "pebbles,bambam", "wilma,betty");
144 
145         verify();
146     }
147 
148     @Test
149     public void modify_include()
150     {
151         BeanModel model = mockBeanModel();
152 
153         expect(model.include("fred", "wilma")).andReturn(model);
154 
155         replay();
156 
157         BeanModelUtils.modify(model, null, "fred,wilma", null, null);
158 
159         verify();
160     }
161 }